package edu.zut.cs.javaee.manager.teach.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher;
import org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers;
import org.springframework.data.domain.ExampleMatcher.StringMatcher;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import edu.zut.cs.javaee.manager.base.service.impl.GenericManagerImpl;
import edu.zut.cs.javaee.manager.teach.service.TeacherManager;
import edu.zut.cs.javaee.manager.teacher.dao.TeacherDao;
import edu.zut.cs.javaee.manager.teacher.domain.Teacher;

@Service(value = "teacherManager")
public class TeacherManagerImpl extends GenericManagerImpl<Teacher, Long> implements TeacherManager {

	TeacherDao teacherDao;



	@Override
	public List<Teacher> findByFullname(String fullname) {
		// 创建查询条件数据对象
		Teacher queryObject = new Teacher();
		queryObject.setName(fullname);
		// 创建匹配器，即如何使用查询条件
		ExampleMatcher matcher = ExampleMatcher.matching() // 构建对象
				.withStringMatcher(StringMatcher.CONTAINING) // 改变默认字符串匹配方式：模糊查询
				.withMatcher("fullname", GenericPropertyMatchers.contains()) // 姓名采用“开始匹配”的方式查询
				.withIgnorePaths("dateCreated", "dateModified"); // 忽略属性：是否关注。因为是基本类型，需要忽略掉
		// 创建实例并查询
		Example<Teacher> ex = Example.of(queryObject, matcher);
		List<Teacher> result = this.teacherDao.findAll(ex);
		return result;
	}

	@Autowired
	public void setTeacherDao(TeacherDao teacherDao) {
		this.teacherDao = teacherDao;
		this.dao = this.teacherDao;
	}

}
